package BigInteger类;

import java.math.BigInteger;
import java.util.Random;

public class 构造方法 {
    public static void main(String[] args) {
        //1. BigIN=nteger(int num,Random rnd)    获取随机大整数，范围：[0~2的次方-1]
        BigInteger big=new BigInteger(4,new Random());
        System.out.println(big);//0 ~ 15

        //2.BigInteger(String val)  获取指定的大整数
        //细节字符串中不能有小数
        BigInteger b=new BigInteger("12332435463547657");
        System.out.println(b);//12332435463547657

        //3. BigInteger(String val, int radix) 获取指定进制的大整数
        /*细节1.字符串中的数字必须是整数
             2.字符串中的数字必须更进制符合
             3.val 中的数字是该进制的数字(不要超过进制数)
             4.int 表示是几进制
             5.转化会转化为10进制的数
         */

        BigInteger ba=new BigInteger("34",5);
        System.out.println(ba);//19

        //4. 静态方法获取BigInteger的对象,内部有优化
        /*细节:
             1. 能表示的范围比较小,只能表示long的范围之内
             2. 在内部对常用的数字-16 ~ 16进行了优化. 提前在先创建好的Bigteger对象,多次获取不会重新创建
         */
        BigInteger bd5=BigInteger.valueOf(16);
        BigInteger bd6=BigInteger.valueOf(16);
        System.out.println(bd6==bd5);  //地址值相同,  ture

        BigInteger bd7=BigInteger.valueOf(17);
        BigInteger bd8=BigInteger.valueOf(17);
        System.out.println(bd7==bd8);  //在-16 ~ 16 之外 之前没有创建好,所以地址值不同   false


    }
}
